home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / longfile / longfile.frm < prev    next >
Text File  |  1996-08-12  |  20KB  |  704 lines

  1. VERSION 2.00
  2. Begin Form frmLongFile 
  3.    BackColor       =   &H00C0C0C0&
  4.    BorderStyle     =   1  'Fixed Single
  5.    Caption         =   "Open File "
  6.    ClientHeight    =   3270
  7.    ClientLeft      =   1110
  8.    ClientTop       =   1500
  9.    ClientWidth     =   7005
  10.    ControlBox      =   0   'False
  11.    Height          =   3675
  12.    Left            =   1050
  13.    LinkTopic       =   "Form1"
  14.    MaxButton       =   0   'False
  15.    MinButton       =   0   'False
  16.    ScaleHeight     =   3270
  17.    ScaleWidth      =   7005
  18.    Top             =   1155
  19.    Width           =   7125
  20.    Begin TextBox txtFilename 
  21.       Height          =   315
  22.       Left            =   120
  23.       TabIndex        =   11
  24.       Top             =   360
  25.       Width           =   2895
  26.    End
  27.    Begin ComboBox comboFileTypes 
  28.       Height          =   315
  29.       Left            =   120
  30.       TabIndex        =   6
  31.       Text            =   "Combo1"
  32.       Top             =   2820
  33.       Width           =   2895
  34.    End
  35.    Begin DirListBox Dir1 
  36.       Height          =   1605
  37.       Left            =   3120
  38.       TabIndex        =   5
  39.       Top             =   840
  40.       Width           =   2535
  41.    End
  42.    Begin DriveListBox Drive1 
  43.       Height          =   315
  44.       Left            =   3120
  45.       TabIndex        =   4
  46.       Top             =   2820
  47.       Width           =   2535
  48.    End
  49.    Begin CommandButton btnCancel 
  50.       Caption         =   "Cancel"
  51.       Height          =   375
  52.       Left            =   5760
  53.       TabIndex        =   2
  54.       Top             =   1320
  55.       Width           =   1095
  56.    End
  57.    Begin CommandButton btnOpen 
  58.       Caption         =   "OK"
  59.       Height          =   375
  60.       Left            =   5760
  61.       TabIndex        =   1
  62.       Top             =   840
  63.       Width           =   1095
  64.    End
  65.    Begin ListBox List1 
  66.       Height          =   1590
  67.       Left            =   120
  68.       Sorted          =   -1  'True
  69.       TabIndex        =   0
  70.       Top             =   840
  71.       Width           =   2895
  72.    End
  73.    Begin Label Label5 
  74.       AutoSize        =   -1  'True
  75.       BackColor       =   &H00C0C0C0&
  76.       Caption         =   "Folders:"
  77.       Height          =   195
  78.       Left            =   3120
  79.       TabIndex        =   10
  80.       Top             =   120
  81.       Width           =   690
  82.    End
  83.    Begin Label Label4 
  84.       AutoSize        =   -1  'True
  85.       BackColor       =   &H00C0C0C0&
  86.       Caption         =   "Filename:"
  87.       Height          =   195
  88.       Left            =   120
  89.       TabIndex        =   9
  90.       Top             =   120
  91.       Width           =   825
  92.    End
  93.    Begin Label Label3 
  94.       AutoSize        =   -1  'True
  95.       BackColor       =   &H00C0C0C0&
  96.       Caption         =   "Drives:"
  97.       Height          =   195
  98.       Left            =   3120
  99.       TabIndex        =   8
  100.       Top             =   2580
  101.       Width           =   615
  102.    End
  103.    Begin Label Label2 
  104.       AutoSize        =   -1  'True
  105.       BackColor       =   &H00C0C0C0&
  106.       Caption         =   "List files of type:"
  107.       Height          =   195
  108.       Left            =   120
  109.       TabIndex        =   7
  110.       Top             =   2580
  111.       Width           =   1425
  112.    End
  113.    Begin Label lblFolders 
  114.       BackColor       =   &H00C0C0C0&
  115.       BorderStyle     =   1  'Fixed Single
  116.       Height          =   375
  117.       Left            =   3120
  118.       TabIndex        =   3
  119.       Top             =   360
  120.       Width           =   3735
  121.       WordWrap        =   -1  'True
  122.    End
  123. End
  124. Option Explicit
  125.  
  126. ' This form and its accompanying longfile.bas module allow 16-bit VB
  127. ' applications to use long file names when run in environments (Windows 95
  128. ' and Windows NT) that support them.  Set up for a call to this form is
  129. ' much like a call to a common dialog box, but with considerably less
  130. ' properties.  The properties are stored in the following structure:
  131.  
  132. '' structure for dialog box setup
  133. 'Type LongFile
  134. '   Action as Integer         ' 1 = Open, 2 = Save
  135. '   Color As Long             ' background color
  136. '   DialogTitle As String     ' title bar text
  137. '   Filename As String        ' filename for input to dialog box, output filename will be in gShortFilename and gLongFilename
  138. '   Filter As String          ' file extension filter
  139. '   FilterIndex As Integer    ' index into file extension filter
  140. 'End Type
  141.  
  142. ' This structure is declared as LF and the declaration is global.  Note
  143. ' one major difference between this structure and that of the common dialog
  144. ' box:  the Filename string is used only to send a name to this form.  The
  145. ' string will be null upon exit from this form.  The user selected filename
  146. ' will be in two global variables, gShortFilename and gLongFilename.  Both
  147. ' will contain the full path to the filename.  Another global variable,
  148. ' gIn16BitSystem will be set to True if the system only supports short
  149. ' filenames, False if the system supports long filenames.  Use this value
  150. ' to determine which of gShortFilename or gLongFilename to use to interact
  151. ' with the system for file saves and opens.  In 16-bit Windows systems, both
  152. ' gShortFilename and gLongFilename will contain the same value.
  153. '
  154. ' Sample setup and call:
  155. '     LF.Action = 1     ' nothing happens until call to GetLongFilename
  156. '     LF.DialogTitle = "Select File to Open"
  157. '     LF.Filter = "Text (*.txt)|*.txt|HTML (*.htm)|*.htm|All Files (*.*)|*.*"
  158. '     LF.FilterIndex = 2   ' set html as default file type
  159. '     GetLongFilename
  160. '
  161. ' Another example:
  162. '     LF.Action = 2     ' nothing happens until call to GetLongFilename
  163. '     LF.DialogTitle = "Save File"
  164. '     LF.Filename = "foo.txt"
  165. '     GetLongFilename
  166. '     if LF.Action = -1 ' then user chose Cancel
  167. '
  168. ' Since the LF structure is global, structure values remain intact between
  169. ' calls except for LF.Filename, which is cleared after each call to
  170. ' GetLongFilename, and LF.Action, which is set to zero on normal exit or
  171. ' -1 if the user selected the Cancel button.
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210. '============================================================================
  211.  
  212.  
  213. ' form level declarations for long filename support
  214.  
  215. Dim hInstKernel As Long
  216. Dim lpGetShortPathNameA As Long
  217. Dim lpFindFirstFileA As Long
  218.  
  219.  
  220.  
  221. ' api calls for long filename support
  222. Declare Function LoadLibraryEx32W Lib "KERNEL" (ByVal lpszFile As String, ByVal hFile As Long, ByVal dwFlags As Long) As Long
  223. Declare Function FreeLibrary32W Lib "KERNEL" (ByVal hDllModule As Long) As Long
  224. Declare Function GetProcAddress32W Lib "KERNEL" (ByVal hInstance As Long, ByVal FunctionName As String) As Long
  225. Declare Function FindFirstFileA Lib "KERNEL" Alias "CallProc32W" (ByVal lpszFile As String, aFindFirst As WIN32_FIND_DATA, ByVal lpfnFunction As Long, ByVal fAddressConvert As Long, ByVal dwParams As Long) As Long
  226. Declare Function GetShortPathNameA Lib "KERNEL" Alias "CallProc32W" (ByVal lpszLongFile As String, ByVal lpszShortFile As String, ByVal lBuffer As Long, ByVal lpfnFunction As Long, ByVal fAddressConvert As Long, ByVal dwParams As Long) As Long
  227. Declare Function lcreat Lib "Kernel" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Integer) As Integer
  228.  
  229. Sub btnCancel_Click ()
  230.  
  231.    gShortFilename = ""
  232.    gLongFilename = ""
  233.    LF.Action = -1
  234.    Unload Me
  235.  
  236. End Sub
  237.  
  238. ' copyright 1996, Internet Software Engineering
  239. Sub btnOpen_Click ()
  240.  
  241.    Dim szShortFilename As String * 256
  242.    Dim p As Integer
  243.    Dim a As Long
  244.    Dim tmpstr As String
  245.    Dim hFile As Integer
  246.    Dim rtn As Integer
  247.  
  248.    tmpstr = lblFolders.Caption
  249.    If Right$(tmpstr, 1) <> "\" Then tmpstr = tmpstr & "\"
  250.    gLongFilename = tmpstr & txtFilename.Text
  251.  
  252.    'Convert the Long Filename to a Short Filename
  253.    If LF.Action = 2 And Not gIn16BitSystem Then ' create the file
  254.       hFile = lcreat(gLongFilename, 0)
  255.       If hFile = -1 Then
  256.      MsgBox "File error.", 16, App.Title
  257.       End If
  258.    End If
  259.  
  260.    If Not gIn16BitSystem Then
  261.       a = GetShortPathNameA(gLongFilename, szShortFilename, 256&, lpGetShortPathNameA,